package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.entity.User;
import com.entity.UserAddress;
import com.utils.Pager;

/**
 * 前台对用户进行的操作
 * @author 
 *
 */
public interface UserDao {
	
	/**
	 * 通过用户名查找用户相关信息(用户表查)
	 * @param name	需要一个String类型的用户名
	 * @return	一个User对象
	 */
	public User loginName(String name);
	
	/**
	 * 增加一条用户信息(用户表)
	 * @param u	需要一个用户对象
	 * @return	受影响行数
	 */
	public int addUser(User u);
	
	/**
	 * 查询用户名是否存在(用户表查)
	 * @param name
	 * @return
	 */
	public int loginNameCount(String name);
	
	/**
	 * 查询用户收货地址(地址表查)
	 * @param userid
	 * @return
	 */
	public List<UserAddress> userAddress(int userid); 
	
	/**
	 * 新增收货地址(地址表)
	 * @param add
	 * @return
	 */
	public int addUserAddress(UserAddress add);
	
	/**
	 * 根据id查询收货地址(地址表查)
	 * @param id
	 * @return
	 */
	public UserAddress userAddressID(int id);
	
	/**
	 * 查询用户总记录数(用户表)
	 * @return
	 */
	public int userCount();
	
	/**
	 * 分页查询所有用户信息(用户表)
	 * @param page
	 * @return
	 */
	public List<User> userAll(@Param("page")Pager page);
	
	/**
	 * 根据用户Id判断该编号是否存在地址信息！(地址表)
	 * @param userId
	 * @return
	 */
	public int userByIdAddress(int userId);
	
	/**
	 * 根据用户ID删除信息！(用户表)
	 * 
	 * @param id
	 * @return
	 */
	public int removeUserById(int id);
	
	/**
	 * 修改用户信息(用户表)
	 * @param user
	 * @return
	 */
	public int modifyUpdate(User user);
	/**
	 * 新增(用户表)
	 * @param user
	 * @return
	 */
	public int modifyAddUser(User user);
	
	/**
	 * 根据用户id查询用户信息(用户表)
	 * @param id
	 * @return
	 */
	public User userById(int id);
}
